/**
 * 
 */
package com.lifeware.research.endo.services;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.lifeware.research.endo.models.dao.IEsamiStrumentaliDao;
import com.lifeware.research.endo.models.dao.IImmunoistochimicaDao;
import com.lifeware.research.endo.models.dao.IPatologieDao;
import com.lifeware.research.endo.models.dao.ITerapieMedicheDao;
import com.lifeware.research.endo.models.entities.EsamiStrumentali;
import com.lifeware.research.endo.models.entities.Immunoistochimica;
import com.lifeware.research.endo.models.entities.Patologie;
import com.lifeware.research.endo.models.entities.TerapieMediche;

/**
 * <p>Servizio di interfacciamento con il modello per le malattie.
 * </p>
 * 
 * @author  Riccardo Cardin, (C) 2012 Lifeware
 * @version 1.0
 */
@Service
public class MalattieService {
	
	private static final String ESAME_STRUMENTALE_ECOGRAFIA_TIROIDE = 
			"Ecografia della tiroide";
	private static final String ESAME_STRUMENTALE_COLONSCOPIA = 
			"Colonscopia";
	
	/* DAOs */
	private ITerapieMedicheDao terapieMedicheDao;
	private IImmunoistochimicaDao immunoistochimicaDao;
	private IPatologieDao patologieDao;
	private IEsamiStrumentaliDao esamiStrumentaliDao;
	

	/**
	 * <p>Ritorna la lista di terapie mediche disponibili nel sistema.
	 * </p>
	 * 
	 * @return Una lista di terapie mediche.
	 */
	public List<TerapieMediche> getTerapieMediche() {
		
		return this.terapieMedicheDao.findAllTerapieMediche();
	}
	
	/**
	 * <p>Ritorna la lista di esami immuno-isto-chimici disponibili 
	 *    nel sistema.
	 * </p>
	 * 
	 * @return Una lista di esami immuno-isto-chimici.
	 */
	public List<Immunoistochimica> getImmunoIstochimica() {
		
		return this.immunoistochimicaDao.findAllImmunoIstochimica();
	}
	
	/**
	 * <p>Ritorna la lista di patologie disponibili nel sistema.
	 * </p>
	 * 
	 * @return Una lista di patologie.
	 */
	public List<Patologie> getPatologie() {
		
		return this.patologieDao.findAllPatologie();
	}
	
	/**
	 * <p>Ritorna tutti i tipi di esame strumentale censiti per 
	 *    l'ecografia della tiroide.
	 * </p>
	 * 
	 * @return Una lista di esami strumentali.
	 */
	public Map<String, EsamiStrumentali> getTipoEsamiEcografiaTiroide() {
		
		return this.esamiStrumentaliDao.findByNomeEsame(
				ESAME_STRUMENTALE_ECOGRAFIA_TIROIDE);
	}
	
	/**
	 * <p>Ritorna tutti i tipi di esame strumentale censiti per
	 *    la colonscopia.
	 * </p>
	 * 
	 * @return Una lista di esami strumentali.
	 */
	public Map<String, EsamiStrumentali> getTipoEsamiColonscopia() {
		
		return this.esamiStrumentaliDao.findByNomeEsame(
				ESAME_STRUMENTALE_COLONSCOPIA);
	}

	public ITerapieMedicheDao getTerapieMedicheDao() {
		return terapieMedicheDao;
	}

	public void setTerapieMedicheDao(ITerapieMedicheDao terapieMedicheDao) {
		this.terapieMedicheDao = terapieMedicheDao;
	}

	public IImmunoistochimicaDao getImmunoistochimicaDao() {
		return immunoistochimicaDao;
	}

	public void setImmunoistochimicaDao(IImmunoistochimicaDao immunoistochimicaDao) {
		this.immunoistochimicaDao = immunoistochimicaDao;
	}

	public IPatologieDao getPatologieDao() {
		return patologieDao;
	}

	public void setPatologieDao(IPatologieDao patologieDao) {
		this.patologieDao = patologieDao;
	}

	public IEsamiStrumentaliDao getEsamiStrumentaliDao() {
		return esamiStrumentaliDao;
	}

	public void setEsamiStrumentaliDao(IEsamiStrumentaliDao esamiStrumentaliDao) {
		this.esamiStrumentaliDao = esamiStrumentaliDao;
	}
}
